package cn.yzgy.yzgyoa.common.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import java.util.Date;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.servlet.http.HttpServletRequest;

/**
 * <p>
 * 日志表
 * </p>
 *
 * @author Yqsen
 * @since 2019-12-13
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("sys_log")
public class SysLog extends Model<SysLog> {

    private static final long serialVersionUID = 1L;

    /**
     * 日志ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 操作
     */
    private String method;

    /**
     * 请求路径
     */
    private String url;

    /**
     * IP
     */
    private String ip;

    /**
     * 浏览器信息
     */
    private String browser;

    /**
     * 操作系统信息
     */
    private String osInfo;

    /**
     * 操作人ID
     */
    private String userId;

    /**
     * 操作人
     */
    private String userName;

    /**
     * 请求参数
     */
    private String requestArgs;

    /**
     * 响应数据
     */
    private String response;

    /**
     * 成功标志
     */
    private Boolean successFlag;

    /**
     * 异常数据
     */
    private String exceptionData;

    /**
     * 执行耗时
     */
    private Long timeCast;

    /**
     * 响应时间
     */
    private Date responseTime;

    /**
     * 请求时间
     */
    private Date requestTime;

    /**
     * 是否需要录入数据库日志
     */
    @TableField(exist = false)
    private boolean needLog;

    /**
     * HTTP请求对象
     */
    @TableField(exist = false)
    private HttpServletRequest request;

    @Override
    protected Serializable pkVal() {
        return this.id;
    }

}
